#include <cstdio>
#include <memory.h>
#include <queue>

using namespace std;

int a[ 301 ][ 301 ], n, m, cnt;
bool visit[ 301 ][ 301 ], ac;
bool visit2[ 301 ][ 301 ];

struct Node
{
    int x, y;
    Node( ) { }
    Node( int _x, int _y )
        : x( _x ), y( _y ) { }
};

void init( )
{
    int i, j;
    for ( i = 0; i < n; i++ )
        for ( j = 0; j < m; j++ )
            scanf("%d", &a[ i ][ j ]);
    memset( visit, 0, sizeof( visit ) );
    memset( visit2, 0, sizeof( visit2 ) );
}

queue<Node> q;

void bfs( int x, int y )
{
    Node p;
    q.push( Node( x, y ) );
    while ( !q.empty( ) )
    {
        p = q.front( ); q.pop( );
        if ( p.x < 0 || p.x >= n || p.y < 0 || p.y >= m )
        {
            ac = false;
            continue;
        }
        if ( visit[ p.x ][ p.y ] ) continue;
        visit[ p.x ][ p.y ] = true;
        if ( a[ p.x ][ p.y ] > 0 ) continue;
        q.push( Node( p.x + 1, p.y ) );
        q.push( Node( p.x - 1, p.y ) );
        q.push( Node( p.x, p.y + 1 ) );
        q.push( Node( p.x, p.y - 1 ) );
    }
}

void bfs2( int x, int y )
{
    Node p;
    q.push( Node( x, y ) );
    while ( !q.empty( ) )
    {
        p = q.front( ); q.pop( );
        if ( p.x < 0 || p.x >= n || p.y < 0 || p.y >= m )
            continue;
        if ( visit2[ p.x ][ p.y ] ) continue;
        visit2[ p.x ][ p.y ] = true;
        if ( visit[ p.x ][ p.y ] )
        {
            cnt += a[ p.x ][ p.y ] - 1;
            continue;
        }
        cnt += a[ p.x ][ p.y ];
        q.push( Node( p.x + 1, p.y ) );
        q.push( Node( p.x - 1, p.y ) );
        q.push( Node( p.x, p.y + 1 ) );
        q.push( Node( p.x, p.y - 1 ) );
    }
}

void work( )
{
    int i, j;
    ac = true;
    for ( i = 0; i < n; i++ )
        for ( j = 0; j < m; j++ )
            if ( a[ i ][ j ] == -1 )
                bfs( i, j );
    if ( !ac )
        puts("Ali Win");
    else
    {
        cnt = 0;
        for ( i = 0; i < n; i++ )
            for ( j = 0; j < m; j++ )
                if ( ( i == 0 || j == 0 || i == n - 1 || j == m - 1 ) && !visit2[ i ][ j ] )
                    bfs2( i, j );
        if ( cnt & 1 )
            puts("Ali Win");
        else
            puts("Baba Win");
    }
}

int main( )
{
    while ( scanf("%d%d", &n, &m) != EOF )
    {
        init( );
        work( );
    }
    return 0;
}
